home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
plnk081.zip
/
pilot-link.0.8.1
/
libsock
/
memo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-08-07
|
2KB
|
84 lines
/* memo.c: Translate Pilot memopad data formats
*
* Copyright (c) 1996, Kenneth Albanowski
*
* This is free software, licensed under the GNU Public License V2.
* See the file COPYING for details.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pi-source.h"
#include "pi-socket.h"
#include "pi-dlp.h"
#include "pi-memo.h"
void free_Memo(struct Memo * a) {
if(a->text)
free(a->text);
}
int unpack_Memo(struct Memo * a, unsigned char * buffer, int len) {
if (len<1)
return 0;
a->text = strdup((char*)buffer);
return strlen((char*)buffer)+1;
}
int pack_Memo(struct Memo * a, unsigned char * buffer, int len) {
int destlen = (a->text ? strlen(a->text) : 0)+1;
if (!buffer)
return destlen;
if (len < destlen)
return 0;
if(a->text) {
if (buffer)
strcpy((char*)buffer,a->text);
return strlen(a->text)+1;
} else {
if (buffer)
buffer[0] = 0;
return 1;
}
}
int unpack_MemoAppInfo(struct MemoAppInfo * ai, unsigned char * record, int len) {
unsigned char * start = record;
int i = unpack_CategoryAppInfo(&ai->category, record, len);
if (!i)
return i;
record += i;
len -= i;
if (len >= 4) {
record += 2;
ai->sortByAlpha = get_byte(record);
record += 2;
} else {
ai->sortByAlpha = 0;
}
return (record-start);
}
int pack_MemoAppInfo(struct MemoAppInfo * ai, unsigned char * record, int len) {
int i;
unsigned char * start = record;
i=pack_CategoryAppInfo(&ai->category, record, len);
if (!record)
return i + 4;
if (i==0) /* category pack failed*/
return 0;
record += i;
len -= i;
if (len<4)
return (record-start);
set_short(record, 0); /* gapfil new for 2.0 */
record += 2;
set_byte(record, ai->sortByAlpha); /* new for 2.0 */
record++;
set_byte(record, 0); /* gapfil new for 2.0 */
record++;
return (record-start);
}